// axios的封装
import axios from 'axios'
import { Toast } from 'vant'
import { removeLocal, getLocal } from '@/utils/local'
// 导入vuex实例化对象
import Store from '@/store' // Store===this.$store
// 导入router实例化对象
import Router from '@/router' // Router===this.$router
const _fetch = axios.create({
  baseURL: process.env.VUE_APP_URL
})

// 请求拦截器
_fetch.interceptors.request.use(
  function (config) {
    // console.log('config', config)
    if (config.needToken) {
      config.headers.authorization = `Bearer ${getLocal()}`
    }
    return config
  },
  function (error) {
    return Promise.reject(error)
  }
)
// 响应拦截器
_fetch.interceptors.response.use(
  function (res) {
    // console.log('res', res)
    if (res.data.code === 200) {
      return res
    } else {
      /**
       * 1.判断状态异常
       * 2.提示一下
       * 3.移除token
       * 4.设置isLogin为false
       * 5.跳转到登录页
       * 6.终止执行.then 跳转执行.catch
       */
      if (res.data.code === 403 || res.data.code === 401) {
        Toast.fail(res.data.message)
        removeLocal()
        Store.commit('setIsLogin', false)
        // 回跳地址
        // 当点击登录页时获取当前的回跳地址
        Router.push('/login?redirect=' + window.location.href.split('#')[1])
        return Promise.reject(new Error(res.data.message))
      }
      // 提示错误
      Toast.fail(res.data.message)
      // 中止.then执行,跳转到.catch执行
      return Promise.reject(new Error(res.data.message))
    }
  },
  function (error) {
    return Promise.reject(error)
  }
)
export default _fetch
